Common Anti-aliasing Methods

SSAA(Super-Sample Anti-Aliasing)

最简单的抗锯齿方法,在更高的分辨率下进行采样,然后缩小到目标分辨率。

image-20201222144827299


MSAA(Multi-Sample Anti-Aliasing)

与SSAA同样是超采样,但是提前进行深度/模板测试,省下大量pixel shader的运行时间。由于几何信息无法平均,所以只适用于Forward rendering

MSAA在光栅化阶段进行,在光栅化过程中,渲染管线会为每个像素生成多个采样点(取决于你选择的MSAA级别,例如2x、4x、8x等)。然后,对于每一个采样点,渲染管线会检查它是否落在当前的图元内部。这样的话就可以只在边缘处执行多重采样。由于不在图元内部多重采样,所以不能处理某些类型的锯齿(如纹理锯齿或shader aliasing),而且对于透明物体的处理也往往不理想。而SSAA不仅可以处理几何锯齿(即由物体边缘造成的锯齿),也可以处理纹理锯齿(即由纹理映射引起的锯齿)。

SSAA可以用于延迟渲染,而MSAA不行。原因是SSAA可以直接采用更高分辨率的G-Buffer,然后等最终光照计算结果出来后再平均,而MSAA不会渲染到更大的G-Buffer上,需要在光栅化渲染G-Buffer时就取平均,而很多G-Buffer几何信息无法平均。

image-20201222144845114

image-20201222145153327


TAA(Temporal Anti-Aliasing)

将超采样分摊到多帧,轻微抖动摄像机,使用多帧结果累加进行抗锯齿。

image-20201222145212655


FXAA(Fast Approximate Anti-Aliasing)

后处理特效,在pixel shader中使用图像处理的方式对边缘进行提取与模糊。

实现方式参考:http://blog.simonrodriguez.fr/articles/30-07-2016_implementing_fxaa.html